package com.ktg.mes.dv.domain;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.*;
import com.ktg.common.utils.DateUtils;
import com.ktg.common.utils.StringUtils;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ktg.common.annotation.Excel;
import com.ktg.common.core.domain.BaseEntity;


/**
 * 设备原始数据对象 dv_machinery_data
 *
 * @author byteco
 * @date 2022-11-29
 */
public class DvMachineryData
{

    public Integer lastIndex;
    public Integer lastStatus;
    public JSONObject jsonObject;


    /**
     * 保存到采集记录的字段名称 - 开始时间
     */
    public final static String name开始时间 = "开始时间";

    /**
     * 保存到采集记录的字段名称 - 开始时间
     */
    public final static String name结束时间 = "结束时间";

    /**
     * 保存到采集记录的字段名称 - 时长
     */
    public final static String name时长 = "时长";

    /**
     * 保存到采集记录的字段名称 - 最后时长
     */
    public final static String name最后时长 = "最后ID";


    /**
     * 保存到采集记录的字段名称 - 温度
     */
    public final static String name温度 = "温度";


    /**
     * 设备上传记录的JSON字段名称（通过：分割） - 运行时间
     */
    public final static String json时长 = "02:RunTime_M_S";

    /**
     * 设备上传记录的JSON字段名称（通过：分割） - 设备内温度
     */
    public final static String json温度 ="CO:TEMP1";

    /**
     * 设备上传记录的JSON字段名称（通过：分割） - 是否启动，大于1 代表设备启动
     */
    public final static String json01结束 = "02:ZSZGL";

    /**
     * 设备上传记录的JSON字段名称（通过：分割） - 是否启动，大于1 代表设备启动
     */
    public final static String json02结束 = "10:ZSZGL";

    /**
     * 分散参数值的JSON字段名称 - 设备内温度
     */
    public final static String param分散时长 = "分散";

    /**
     * 分散参数值的JSON字段名称 - 设备内温度
     */
    public final static String param分散温度 = "温度";

    /**
     * 研磨参数值的JSON字段名称 - 设备内温度
     */
    public final static String param研磨时长 = "研磨时长";

    /**
     * 研磨参数值的JSON字段名称 - 设备内温度
     */
    public final static String param研磨温度 = "温度";


    public static String getStringFrom(JSONObject jsonObject,String keyStr){
        String[] keyList = keyStr.split(":");
        JSONObject thisJson = jsonObject;
        for (int i = 0;i < keyList.length;i++){
            if (i == keyList.length-1){
                return thisJson.getString(keyList[i]);
            }else {
                thisJson = jsonObject.getJSONObject(keyList[i]);
                if (thisJson == null || !(thisJson instanceof JSONObject)){
                    return null;
                }
            }
        }
        return null;
    }

    public static Double getDoubleFrom(JSONObject jsonObject,String keyStr){
        String[] keyList = keyStr.split(":");
        JSONObject thisJson = jsonObject;
        for (int i = 0;i < keyList.length;i++){
            if (i == keyList.length-1){
                return thisJson.getDouble(keyList[i]);
            }else {
                thisJson = jsonObject.getJSONObject(keyList[i]);
                if (thisJson == null || !(thisJson instanceof JSONObject)){
                    return null;
                }
            }
        }
        return null;
    }

    public static Integer getIntegerFrom(JSONObject jsonObject,String keyStr){
        String[] keyList = keyStr.split(":");
        JSONObject thisJson = jsonObject;
        for (int i = 0;i < keyList.length;i++){
            if (i == keyList.length-1){
                return thisJson.getInteger(keyList[i]);
            }else {
                thisJson = jsonObject.getJSONObject(keyList[i]);
                if (thisJson == null || !(thisJson instanceof JSONObject)){
                    return null;
                }
            }
        }
        return null;
    }

    public static JSONObject getJSONFrom(JSONObject jsonObject,String keyStr){
        String[] keyList = keyStr.split(":");
        JSONObject thisJson = jsonObject;
        for (int i = 0;i < keyList.length;i++){
            if (i == keyList.length-1){
                return thisJson.getJSONObject(keyList[i]);
            }else {
                thisJson = jsonObject.getJSONObject(keyList[i]);
                if (thisJson == null){
                    return null;
                }
            }
        }
        return null;
    }

}
